import mountElement from './mountElement';
import updateNodeElement from './updateNodeElement';

export default function createDomElement(vDom) {
  let newElement = null;
  if (vDom.type === 'text') { // 文本节点
    newElement = document.createTextNode(vDom.props.textContent);
  } else { // 元素节点
    newElement = document.createElement(vDom.type);
    updateNodeElement(newElement, vDom); // 给元素添加属性事件
  }

  newElement._vDom = vDom; // 记录当前的 vDom 方便下一次对比新旧 Vdom 的区别

  // 递归创建子节点
  vDom.children.forEach(child => {
    mountElement(child, newElement);
  });

  // 判断 vDom 的 props 中有 ref
  if (vDom.props && vDom.props.ref) {
    vDom.props.ref(newElement);
  }

  return newElement;
}
